'''
本文件是方便开发者使用的测试入口文件
可以通过运行本文件来决定运行哪一个测试项目
'''

import os
import subprocess


# 修改工作目录
os.chdir('./test')

# 获取所有的测试项目
all_projects = os.listdir()

# 用于记录当前是第几页
page = 1

# 用于记录一页展示多少条数据
limit = 10

# 用于展示当前页的数据
def show_some_projects():
    show_projects = all_projects[(page - 1) * limit: page * limit]
    for i in range(len(show_projects)):
        print(f'[{i}] - {show_projects[i]}')

# 等待用户输入对应操作
def wait_input():
    global page
    print('请输入对应的项目编号并回车即可运行')
    print('    若要选择下一页则输入 n 并回车')
    print('    若要选择下一页则输入 r 并回车')
    cmd = input('> ')
    if cmd == 'n':
        page += 1
        show_some_projects()
        return False
    elif cmd == 'r':
        page -= 1
        show_some_projects()
        return False
    else:
        try:
            cmd = int(cmd)
            if 0 <= cmd < limit:
                run(cmd)
                return True
        except ValueError as e:
            print('输入有误，请重新输入')
            show_some_projects()
            return False
        except IndexError as e:
            print('不存在此项目，请重新输入')
            show_some_projects()
            return False
        

def run(cmd):
    os.chdir(all_projects[(page-1) * limit + cmd])
    subprocess.Popen(['python', './bin/www.py'])
    os.chdir('..')

if __name__ == '__main__':
    # 展示当前页的数据
    show_some_projects()
    while True:
        # 询问用户操作
        if flag := wait_input(): break
        


